package admin

import (
	"Walker/app/http/validator"
	"Walker/app/http/validator/admin"
	"Walker/app/services"
	"Walker/app/utils/data"
	"Walker/app/utils/response"
	"fmt"
	"github.com/gin-gonic/gin"
	"strings"
)

type SystemRole struct {
	systemRoleService services.SystemRole
}

// 	@Tags 角色管理模块
// 	@Summary 角色列表
// 	@Description 角色列表
// 	@Accept json
// 	@Produce json
// 	@Param keywords query string false "关键词"
// 	@Param status query int false "状态1是正常0是异常"
// 	@Success 200 {object} response.JsonResult{data=model.SystemRoleData,total_rows=int}
// 	@Failure 400 {object} response.JsonResult
// 	@Router /system_role [get]
//	@Security ApiKeyAuth
func (controller *SystemRole) Index(ctx *gin.Context) {
	data, err := controller.systemRoleService.Index(ctx)
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	response.Success(ctx, "查询成功", data)
	return
}

// 	@Tags 角色管理模块
// 	@Summary 添加角色
// 	@Description 添加角色
// 	@Accept json
// 	@Produce json
// 	@Param body body admin.SystemRoleRequest true "数据json"
// 	@Success 200 {object} response.JsonResult
// 	@Failure 400 {object} response.JsonResult
// 	@Router /system_role [post]
//	@Security ApiKeyAuth
func (controller *SystemRole) Store(ctx *gin.Context) {
	var param admin.SystemRoleRequest
	err := validator.Verify(ctx, &param)
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	err = controller.systemRoleService.Edit(param, 0)
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	response.Success(ctx, "创建成功", "")
	return
}

// 	@Tags 角色管理模块
// 	@Summary 修改角色
// 	@Description 修改角色
// 	@Accept json
// 	@Produce json
// 	@Param id path string true "主键id"
// 	@Param body body admin.SystemRoleRequest true "数据json"
// 	@Success 200 {object} response.JsonResult
// 	@Failure 400 {object} response.JsonResult
// 	@Router /system_role/{id} [put]
//	@Security ApiKeyAuth
func (controller *SystemRole) Update(ctx *gin.Context) {
	var param admin.SystemRoleRequest
	err := validator.Verify(ctx, &param)
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	err = controller.systemRoleService.Edit(param, uint(data.StringToInt(ctx.Param("id"))))
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	response.Success(ctx, "创建成功", "")
	return
}

// 	@Tags 角色管理模块
// 	@Summary 删除角色
// 	@Description 删除角色
// 	@Accept json
// 	@Produce json
// 	@Param id path string true "主键id逗号分割"
// 	@Success 200 {object} response.JsonResult
// 	@Failure 400 {object} response.JsonResult
// 	@Router /system_role/{id} [delete]
//	@Security ApiKeyAuth
func (controller *SystemRole) Destroy(ctx *gin.Context) {
	ids := strings.Split(ctx.Param("id"), ",")
	fmt.Print(ids)
	err := controller.systemRoleService.Destroy(ids)
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	response.Success(ctx, "删除成功", "")
	return
}

// 	@Tags 角色管理模块
// 	@Summary 查看角色
// 	@Description 查看角色
// 	@Accept json
// 	@Produce json
// 	@Param id path string true "主键id逗号分割"
// 	@Success 200 {object} response.JsonResult{data=map[string]interface{}}
// 	@Failure 400 {object} response.JsonResult
// 	@Router /system_role/{id} [get]
//	@Security ApiKeyAuth
func (controller *SystemRole) Show(ctx *gin.Context) {
	//查询数据详情
	data, err := controller.systemRoleService.Show(uint(data.StringToInt(ctx.Param("id"))))
	if err != nil {
		response.Error(ctx, err.Error())
		return
	}
	response.Success(ctx, "创建成功", data)
	return
}
